#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDockWidget>
#include <QVBoxLayout>
#include <QLabel>
#include <QPushButton>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 给主窗口添加一个子窗口：浮动窗口
    // 窗口名称可以在创建的时候指定，也可以通过 dock->setWindowTitle() 来设置
    QDockWidget* dock = new QDockWidget("这是一个浮动窗口");
    // 添加进主窗口，必须要设置初始位置
    this->addDockWidget(Qt::LeftDockWidgetArea, dock);
    // 给浮动窗口内部添加一些其他的控件
    // 不能直接给这个浮动窗口添加控件，只能添加一个 QWidget ，因此需要创建一个 QWidget 对象，往QWidget中添加控件，再设置进浮动窗口里
    QWidget* container = new QWidget();
    dock->setWidget(container);
    // 包装 container
    // 创建一个布局管理器，设置进 QWidget 中
    QVBoxLayout* layout = new QVBoxLayout();
    container->setLayout(layout);
    // 创建其他控件添加到 layout 中
    QLabel* label = new QLabel("这是一个 QLabel");
    QPushButton* button = new QPushButton("按钮");
    layout->addWidget(label);
    layout->addWidget(button);
    // 设置浮动窗口允许停靠的位置
    dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea);
}

MainWindow::~MainWindow()
{
    delete ui;
}

